package compraventa.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import compraventa.excepcion.DAOExcepcion;
import compraventa.modelo.ListarPublicacion;
import compraventa.util.ConexionMyBD;


public class ListarPublicacionDAO extends BaseDAO{
	
	public Collection<ListarPublicacion> listarcompras(int idUsuario) throws DAOExcepcion {
		Collection<ListarPublicacion> c = new ArrayList<ListarPublicacion>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionMyBD.obtenerConexion();
			String query = "select p.descripcion, p.titulo, m.canArtMov, p.precio, p.catpubli_idcategoria, c.nomcategoria, " +
					"(m.canArtMov*p.precio) as total " +
					"from movimientos m " +
					"left join publicacion p on m.publicacion_idpublicacion = p.idpublicacion " +
					"left join categoria c on p.catpubli_idcategoria = c.idcategoria " +
					"where m.persona_idpersona = ? and m.tipomov = 'S';";
			stmt = con.prepareStatement(query);
			stmt.setInt(1, idUsuario);
			rs = stmt.executeQuery();
			while (rs.next()) {
				ListarPublicacion vo = new ListarPublicacion();
				vo.setPubdescripcion(rs.getString(1));
				vo.setPubtitulo(rs.getString(2));
				vo.setPubcantidad(rs.getInt(3));
				vo.setPubprecio(rs.getDouble(4));
				vo.setPubidcategoria(rs.getInt(5));
				vo.setPubnomcategoria(rs.getString(6));
				c.add(vo);
			}
			
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return c;
	}
	
public Collection<ListarPublicacion> listarventas(int idUsuario) throws DAOExcepcion {
		Collection<ListarPublicacion> c = new ArrayList<ListarPublicacion>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionMyBD.obtenerConexion();
			String query = "select p.descripcion, p.titulo, m.canArtMov, p.precio, p.catpubli_idcategoria, c.nomcategoria, " +
					"(m.canArtMov*p.precio) as total " +
					"from movimientos m " +
					"left join publicacion p on m.publicacion_idpublicacion = p.idpublicacion " +
					"left join categoria c on p.catpubli_idcategoria = c.idcategoria " +
					"where m.persona_idpersona = ? and m.tipomov = 'I';";
			stmt = con.prepareStatement(query);
			stmt.setInt(1, idUsuario);
			rs = stmt.executeQuery();
			while (rs.next()) {
				ListarPublicacion vo = new ListarPublicacion();
				vo.setPubdescripcion(rs.getString("p.descripcion"));
				vo.setPubtitulo(rs.getString("p.titulo"));
				vo.setPubcantidad(rs.getInt("m.canArtMov"));
				vo.setPubprecio(rs.getDouble("p.precio"));
				vo.setPubidcategoria(rs.getInt("p.catpubli_idcategoria"));
				vo.setPubnomcategoria(rs.getString("c.nomcategoria"));
				c.add(vo);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			; 
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return c;
	}

}
